package com.obradovicnjegovan.webprodavnica.controller;

import java.util.List;

import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import org.apache.tapestry5.services.Request;

import com.obradovicnjegovan.webprodavnica.entities.Kategorija;
import com.obradovicnjegovan.webprodavnica.entities.Korisnik;
import com.obradovicnjegovan.webprodavnica.entities.Korpa;
import com.obradovicnjegovan.webprodavnica.entities.Narudzbenica;
import com.obradovicnjegovan.webprodavnica.entities.OdabranProizvod;
import com.obradovicnjegovan.webprodavnica.entities.Proizvod;

public interface ControllerAL {
	Request getRequest();

	void setRequest(Request request);

	String getMessage();

	void setMessage(String message);

	boolean preuzmiKorpu(Korpa korpa);

	boolean ostaviKorpu();

	boolean daLiKorpaPostoji();

	Korpa getKorpa();
	
	

	String sacuvajKategoriju(Kategorija k);

	String sacuvajProizvod(Proizvod p);
	
	String sacuvajNarudzbenicu(Narudzbenica n);
	
	void sacuvajKorpu(Korpa korpa);
	
	void sacuvajOdabranProizvod(OdabranProizvod od);
	
	
	
	
	Proizvod pronadjiProizvod(long id);
	
	Narudzbenica pronadjiNarudzbenicu(long id);
	
	Korpa pronadjiKorpu(long get_id);
	
	Korisnik pronadjiKoriznika(Object principal);

	
	

	List<Narudzbenica> pronadjiSveNarudzbenice();
	
	List<Kategorija> pronadjiSveKategorije();

	List<Proizvod> pronadjiSveProizvode();

	List<Korisnik> pronadjiSveKlijente();
	
	List<OdabranProizvod> pronadjiSveOdabraneProizvode();
	


	
	String obrisiProizvod(Proizvod p);
	
	String obrisiKategoriju(Kategorija kat);

	void obrisiOdabranProizvod(OdabranProizvod odabranProizvod);
	
	
	

	OdabranProizvod ubaciProizvodUKorpu(Proizvod p, Korpa k, int kolicina);
	

	Narudzbenica kreirajNovuNarudzbenicu(Korpa k);
	
	
	List<Proizvod> najnovijiProizvodi(int n);
	

	String ponistiNarudzbenicu(Narudzbenica n);

	

	String formatDouble(double d);
	
	String getUkupanPrihod();

	String getSumaPlacenihNarudzbina();

	String getSumaNarudzbinaNaCekanju();

	void registrujKorisnika(Korisnik korisnik);

	


}
